package com.example.fengyungo.service;

import com.example.fengyungo.domain.pojo.DriverMessageList;
import com.example.fengyungo.domain.pojo.Message;
import com.example.fengyungo.domain.pojo.UserMessageList;

import java.util.List;

public interface MessageService {
    /**
     * 根据司机id获取消息列表
     *
     * @param driverId 司机id
     * @return 司机消息列表中的用户的基本信息
     */
    List<DriverMessageList> getMessageListByDriverId(String driverId);

    /**
     * 根据司机id和用户id获取聊天记录
     *
     * @param driverId 司机id
     * @param userId   用户id
     * @param num      聊天记录条数
     * @return 司机和用户的聊天记录
     */
    List<Message> getMessagesByDriverIdAndUserId(String driverId, String userId, int num);

    /**
     * 更新司机消息列表中的最新消息以及消息发送时间
     *
     * @param message Message
     * @return Integer
     */
    Integer updateDriverLastContentAndTime(Message message);

    /**
     * 插入消息
     *
     * @param message Message
     * @return Integer
     */
    Integer insertMessage(Message message);

    /**
     * 更新司机消息列表中的司机未读数
     *
     * @param driverId     司机id
     * @param userId       用户id
     * @param driverUnread 司机未读数
     * @return Integer
     */
    Integer updateDriverUnread(String driverId, String userId, Integer driverUnread);

    /**
     * 根据用户id获取用户的消息列表
     *
     * @param userId 用户id
     * @return 用户消息列表
     */
    List<UserMessageList> getMessageListByUserId(String userId);

    /**
     * 更新用户消息列表中的最新消息以及消息发送时间
     *
     * @param message Message
     * @return Integer
     */
    Integer updateUserLastContentAndTime(Message message);

    /**
     * 更新用户消息列表中的司机未读数
     *
     * @param driverId   司机id
     * @param userId     用户id
     * @param userUnread 用户未读数
     * @return Integer
     */
    Integer updateUserUnread(String driverId, String userId, Integer userUnread);

    /**
     * 获取司机未读数
     *
     * @param driverId 司机id
     * @param userId   用户id
     * @return Integer
     */
    Integer getDriverUnread(String driverId, String userId);

    /**
     * 获取用户未读数
     *
     * @param driverId 司机id
     * @param userId   用户id
     * @return Integer
     */
    Integer getUserUnread(String driverId, String userId);

    /**
     * 司机与用户发起聊天
     * @param userId 用户id
     * @param driverId 司机id
     * @return Integer
     */
    Boolean addMessageList(String userId, String driverId);

    /**
     * 修改司机消息列表状态
     * @param driverId 司机id
     * @param userId 用户id
     * @param driverListStatus 列表状态，0存在，1不存在
     * @return Integer
     */
    Integer updateDriverMessageListStatus(String driverId, String userId, Integer driverListStatus);

    /**
     * 修改用户消息列表状态
     * @param driverId 司机id
     * @param userId 用户id
     * @param userListStatus 列表状态，0存在，1不存在
     * @return Integer
     */
    Integer updateUserMessageListStatus(String driverId, String userId, Integer userListStatus);
}
